Method and system for electronic collaboration

ABSTRACT

An electronic collaboration system via which a plurality of users can post and view content, rapidly located desired content, and be notified of new content in real time.

PRIORITY CLAIM/INCORPORATION BY REFERENCE

This application is a continuation-in-part of U.S. patent applicationSer. No. 14/666,359 filed on Mar. 24, 2015, which is a continuation ofU.S. patent application Ser. No. 13/783,641 filed on Mar. 4, 2013. Thisapplication is also a continuation-in-part of U.S. patent applicationSer. No. 14/213,020 filed on Mar. 14, 2014, which claims priority toU.S. Provisional Patent Application 61/787,342 filed on Mar. 15, 2013,and which is a continuation-in-part of U.S. patent application Ser. No.13/972,092 filed on Aug. 21, 2013. U.S. patent application Ser. No.13/972,092 claims priority to U.S. Provisional Patent Application61/845,319 filed on Jul. 11, 2013. This application is also acontinuation-in-part of U.S. patent application Ser. No. 13/840,592filed on Mar. 15, 2013. Each of the documents mentioned above is herebyincorporated herein by reference. U.S. patent application Ser. No.13/757,937 is also incorporated by reference herein by way of itsincorporation by reference in the above-incorporated U.S. ProvisionalPatent Application 61/787,342.

BACKGROUND

Limitations and disadvantages of conventional and traditional approachesto electronic collaboration will become apparent to one of skill in theart, through comparison of such approaches with some aspects of thepresent method and system set forth in the remainder of this disclosurewith reference to the drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts an example computing environment in accordance withaspects of this disclosure.

FIGS. 2-5 depict example user interface elements of a system for ideageneration and evaluation.

FIG. 6 is a flowchart illustrating an exemplary process performed by asystem for idea generation and evaluation.

FIG. 7 is a flowchart illustrating an exemplary process performed by asystem for idea generation and evaluation using value-added-basedvoting.

FIGS. 8-12 depict example user interface elements of a system forcustomer relationship management and collaboration.

FIG. 13 is a flowchart illustrating an exemplary process performed by asystem for customer relationship management and collaboration.

FIG. 14 is a high-level block diagram of a device that hosts anelectronic forum in accordance with an example implementation of thisdisclosure.

FIGS. 15A-15C show an example user interface of an electronic forum.

FIG. 15D depicts an example screen of an electronic forum in which asecond example post is selected for display.

FIG. 16 shows an example user profile screen of the electronic forum.

FIG. 17 is a flowchart illustrating an example process for real-time,interest-based notifications, in accordance with an exampleimplementation of this disclosure.

FIG. 18A depicts the example screen of FIG. 15A after selection of the“create post” interface element.

FIG. 18B depicts the example screen of FIG. 18A after selection of the“Form 1” interface element.

FIG. 18C depicts the example screen of FIG. 18A after selection of the“Form 2” interface element.

FIG. 19A depicts the example screen of FIG. 15A after selection of the“search” interface element.

FIG. 19B depicts the example screen of FIG. 18A after selection of the“Form 1” interface element.

FIG. 19C depicts the example screen of FIG. 18A after selection of the“Form 2” interface element.

FIG. 20A depicts the example screen of FIG. 15A after selection of the“Comment” interface element that is part of the first example post.

FIG. 20B depicts the example screen of FIG. 15D after selection of the“Comment” interface element that is part of the second example post.

FIG. 21A depicts the example screen of FIG. 15A after selection of the“Edit” interface element that is part of the first example post.

FIG. 21B depicts the example screen of FIG. 15D after selection of the“Edit” interface element that is part of the second example post.

FIG. 22 depicts a flowchart of an example process for creating a formfor post generation in an electronic forum.

DETAILED DESCRIPTION

FIG. 1 depicts an example computing environment for idea generation andevaluation. Shown are a network 102, a computing device 104, andcomputing devices 106 a and 106 b. Examples of computing devicesinclude: desktop computers, laptop computers, tablet computers,smartphones, stand-alone servers, rack-mounted servers, and the like. Inan example implementation, the computing devices 104 may operate as aweb and/or application server (e.g., may be a stand-alone orrack-mounted server), and the computing devices 106 a-106 b may eachoperate as an end-system (e.g., may be a personal computer, tabletcomputer, or a smart phone).

The network 102 may comprise a local area network and/or a wide areanetwork. The network 102 may comprise, for example, network “plumbing”such as routers, switches, cables, etc. The network 102 may be, forexample, the Internet and/or an Ethernet-based LAN.

The computing device 104 may comprise circuitry operable to process(e.g., read from memory, perform logic and/or arithmetic operations on,packetize according to one or more communication protocols, and/or thelike) data to be sent via a network connection, send data via a networkconnection, receive data via a network connection, and process (e.g.,write to memory, perform logic and/or arithmetic operations on,depacketize according to one or more communication protocols, and/or thelike) data received via a network connection. Such data may include, forexample, data formatted and communicated in accordance with one or moreInternet-related standards (e.g., HTML, HTTP, TCP/IP, etc.), and/or withone or more vendor-specific Application Programming Interfaces (APIs).Such circuitry may enable the computing device 104 to operate as a webserver and/or a vendor-specific application server.

The circuitry of the computing device 104 may comprise, for examplehardware 108 and software 110. The hardware 108 may comprise, forexample, a CPU, memory circuitry, and network interface circuitry (NIC).The software 110 may comprise, for example, an operating system, adatabase application, and a web server application. The databaseapplication(s) may, for example, store, organize, and/or provide accessto data of an electronic forum and/or CRM data. The web server may, forexample, serve a graphical user interface of the electronic forum and/orCRM database. The web server may, for example, serve a graphical userinterface of the electronic forum.

The memory circuitry may comprise, for example, SRAM, DRAM, ROM, FLASH,magnetic storage, and/or any other suitable type of memory. The memorycircuitry may store program memory, run-time memory, and/or massstorage. The memory circuitry may store files (e.g., HTML, CSS, and/orscript files) and one or more databases (e.g., in which forum contentand/or user account information is stored) of an electronic forum whichmay be hosted by the device 104. The memory circuitry may store dataassociated with a customer relationship management (CRM) database hostedby the device 104 (e.g., information about existing and potentialcustomers, information about open sales opportunities, information aboutclosed sales opportunities, and/or the like). Posts to the electronicforum may be stored, for example, as structured data (e.g., in a table,database, or the like).

The forum content may include, for example, text descriptions of ideas,files (e.g., images, presentations, papers, and/or the like) uploadedwith idea submissions, comments on ideas, and attributes associated withsubmitted ideas. Such attributes may include, for example, a thresholdparameter corresponding to the number of votes an idea needs to warrantfurther evaluation (e.g., to be passed onto a review committee), aparameter for tracking the number of votes an idea has received, avoting window parameter for determining the expiration time of an idea,and/or the like. The threshold number of votes needed for a particularidea to proceed to further evaluation may be based, for example, onattributes of the idea such as, for example, the user that submitted theidea (e.g., higher ranking users may need less votes, users with moresuccessful past ideas may need less votes, and/or the like), thecategory under which the idea is submitted, the estimated cost ofimplementing the idea, estimated timeline for implementing the idea,and/or the like. The parameter for determining the expiration of theidea may be determined based, for example, on attributes of the userand/or attributes of the idea. In an example implementation, each votemay a unit-less values that simply represents one vote. For example, ina forum of 10 users, each with 10 votes, 1 vote may simply correspond to1% of all votes). In another example implementation, votes may representreal-world value. For example, each vote may correspond to a dollarwithin the discretionary budget of the user that the user is pledging tothe idea, in the event that the idea meets the threshold number of votesand/or supporters. For example, a user with a discretionary budget of$20,000 may cast $5000 worth of votes for a particular idea and, if thatparticular idea gets approved by committee, the $5000 would go towardthe idea's budget.

The user account information (“user profiles”) may include, for example,biographical information, user preferences, a user activity log, and/oruser attributes. The biographical information may include, for example,name, address, contact info, work title, and/or the like. The userpreferences may include, for example, which categories, tags, etc. thatthe user is interested in (e.g., manually set by the user and/orautomatically populated based on the user's activity). The userpreferences may include, for example, the user's subscriptions. A user'ssubscriptions determine which posts that the user is automaticallynotified of. In this regard, as described further below, the electronicforum may enable its users to subscribe to particular tags, toparticular users, and/or to particular combinations of tags and/orusers. The users may then be automatically notified (e.g., via a pushnotification to an app on their smartphone) upon creation of a post inthe electronic forum that contains a tag, mention, or combinationthereof to which the user is subscribed.

The user activity log may track, for example, which ideas the user hassubmitted and the fate of those submissions (e.g., whether they gotsufficient votes to warrant further evaluation, whether they wereeventually implemented, which users voted for them, and/or the like).The user activity log may track, for example, which ideas the user hasvoted for and the fate of those ideas (e.g., whether they got sufficientvotes to warrant further evaluation, whether they were eventuallyimplemented, which other users voted for them, and/or the like). Theuser attributes may include, for example, a total votes parameter. Thetotal votes parameter may indicate how many concurrently outstandingvotes that the user may have at any given time, where an outstandingvote is a vote cast for an idea that is currently open for voting (i.e.,an unexpired idea). Additionally or alternatively, the user attributesmay include an outstanding votes parameter that indicates how manyoutstanding votes the user currently has. Additionally or alternatively,the user attributes may include an available votes parameter which mayindicate how the number of votes that the user could, at this moment,cast for one or more ideas that are open for voting (i.e., thedifference between the user's total votes and outstanding votes).

The total votes parameter and/or outstanding votes parameter for a givenuser may be determined based on a variety of factors such as, forexample, the user's job title, the user's seniority, past performance ofideas that the user voted for, past performance of ideas that the usersubmitted, and/or the like. For example, where a user's activity shows apropensity (e.g., above a threshold correlation between past successfulideas and said user's votes) for that user to vote for successful (asmeasured by any desired metric such as profit, cost savings, energysavings, etc.) ideas, that user's total votes parameter may beincreased. Conversely, where a user's activity shows a propensity (e.g.,below a threshold correlation between past successful ideas and saiduser's votes) for that user to vote for unsuccessful (as measured by anydesired metric such as profit, cost savings, energy savings, etc.)ideas, that user's total votes parameter may be decreased.

The CPU may comprise, for example an x86-based processor, an ARM-basedprocessor, or any other suitable circuitry operable to executeinstructions (e.g., stored in the memory of hardware 108) for processingdata, generating control signals, and/or otherwise performing, orcausing other circuits to perform, functions described herein. In thismanner, an operating system and one or more software applications mayrun on the computing device 104. Such software applications may include,for example, a CRM database, a web server, an application server, and/orprocesses for performing various aspects of a communication protocol(e.g., for implementing TCP/IP and interfacing the applications to thenetwork 102).

The network interface circuitry may be operable to transmit and receivephysical layer signals via the network. In the receive direction, thenetwork interface circuitry may convert the signals to packets of binarydata, and output the packets to the CPU and/or memory for processing.The network interface circuitry may, for example, receive signals inaccordance with Ethernet physical layer protocols, assemble the signalsto IP packets and output the IP packets to the CPU and/or memory. In thetransmit direction, the network interface circuitry may receive IPpackets from the CPU and/or memory, encapsulate the IP packets intoEthernet frames, and transmit the frames into the network 102 inaccordance with Ethernet physical layer protocols.

In operation, the computing device 104 may operate as a web server tohost an electronic forum via which users can submit ideas and evaluateideas submitted by other users, as, for example, described below withreference to FIGS. 2-7. Additionally, In operation, the computing device104 may operate as a web server to host an electronic forum and aninterface via which users can interact with CRM data as, for example,described below with reference to FIGS. 8-14.

Each of the computing devices 106 a and 106 b may comprise circuitryoperable to process (e.g., read from memory, perform logic and/orarithmetic operations on, packetize according to one or morecommunication protocols, and/or the like) data to be sent via a networkconnection, send data via a network connection, receive data via anetwork connection, process (e.g., write to memory, perform logic and/orarithmetic operations on, depacketize according to one or morecommunication protocols, and/or the like) data received via a networkconnection. Such data may include, for example, data formatted andcommunicated in accordance with one or more Internet-related standards(e.g., HTML, HTTP, TCP/IP, etc.), and/or in one or more vendor-specificApplication Programming Interfaces (APIs). Such circuitry may enableeach of the end-systems 106 a-106 c to operate as a web client, and/orrun a vendor-specific application client. Additionally or alternatively,the circuitry may enable the computing devices 106 a and 106 b topresent web-based content to a user (e.g., via speakers and/or amonitor) and accept input from a user (e.g., via touchscreen, keyboard,mouse, and/or the like).

The circuitry of the computing devices 106 a and 106 b may comprise, forexample hardware 112 and software 114. The hardware 112 may comprise,for example, a CPU, memory circuitry, and network interface circuitry(NIC). The software 114 may comprise, for example, an operating systemand a web browser application, and/or a vendor-specification clientapplication (e.g., a CRM client application and/or an electronic forumclient application).

The CPUs of computing devices 106 a and 106 b may each comprise, forexample an x86-based processor, an ARM-based processor, or any othersuitable circuitry operable to execute instructions (e.g., stored in thememory of hardware 112) for processing data, generating control signals,and/or otherwise performing, or causing other circuits to perform,functions described herein. In this manner, an operating system and oneor more software applications may run on each computing device 106. Suchsoftware applications may include, for example, a web browser, avendor-specific application client, and/or processes for performingvarious aspects of a communication protocol (e.g., for implementingTCP/IP and interfacing the applications to the network 102).

The network interface circuitry of devices 106 a and 106 b may each beoperable to transmit and receive physical layer signals via the network.In the receive direction, the network interface circuitry may convertthe signals to packets of binary data, and output the packets to the CPUand/or memory for processing. The network interface circuitry may, forexample, receive signals in accordance with Ethernet physical layerprotocols, assemble the signals to IP packets and output the IP packetsto the CPU and/or memory. In the transmit direction, the networkinterface circuitry may receive IP packets from the CPU and/or memory,encapsulate the IP packets into Ethernet frames, and transmit the framesinto the network 102 in accordance with Ethernet physical layerprotocols.

In operation, a computing device 106 (referring to either or both ofcomputing devices 106 a and 106 b) may access the electronic forumhosted by the computing device 104. A web browser (or vendor-specific“app”) running on the computing device 106 may request content by, forexample, sending HTTP requests (or in accordance with a vendor specificAPI) to the computing device 104. Packets containing requested contentfrom the electronic forum may be transmitted into the network 102 bynetwork interface circuitry and/or a CPU of the computing device 104.Received packets carrying requested content may be processed by networkinterface circuitry and/or CPU of the device 106 to recover the contentand store it to memory of the device 106. The web browser (or “app”) maythen cause the content to be rendered for display (e.g., by the CPU) ina window on a monitor of the device 106. The requested content may, forexample, comprise case studies that comprise selected data from the CRMdatabase, where the case studies may be automatically generated andposted to the electronic forum in response to changes in the CRM data.Additionally, or alternatively, the requested content may comprisecomments to the case study, and/or attachments to the case study).Packets containing data and/or commands to be submitted to theelectronic forum may be transmitted into the network 102 by the networkinterface circuitry and/or CPU of the device 106. The packets may beprocessed via the network interface circuitry and/or CPU of the device104 to recover the commands and/or data and respond appropriately.

Referring to FIG. 2, there is shown an example window (or screen) 202 ofa graphical user interface of an electronic idea generation andevaluation forum. The window/screen 202 may, for example, be displayedon a monitor of device 106 a and be interacted with via a mouse andkeyboard of the device 106 a. The example window 202 comprises aplurality of interface elements each which may be hyperlinks, textboxes, drop down menus, and/or the like.

Element 204 may be a link that, when interacted with (e.g., touched,clicked, or the like) brings up a window in which notifications for theuser are displayed (e.g., an “inbox” of messages, statuses, and the likepertaining to submitted ideas, votes for ideas, and/or other activity inforum). Element 206 may be a link that, when interacted with, brings upa form for submitting a new idea. The form may have, for example,elements for entering: the title of the idea, a description of the idea,a categorization of the idea, for associating tags with the idea, andthe like. Upon submission of the form, a thread and/or post may becreated in the forum and other users may be enabled to view and vote onthe idea. Element 208 may be, for example, a text-box for enteringsearch queries for searching ideas, posts, attachments, and/or any othercontent of the forum. Element 210 may be a link that, when interactedwith, brings up a window for configuring the user's profile and/orpreferences. Interface elements 204-210 may be part of a “navigationbar” of the window/screen 202.

Element 250 comprises “at-a-glance” information about submitted ideas.For example, each time the window 202 is loaded, a plurality ofsubmitted ideas may be algorithmically selected and displayed aselements 214, each of which comprises information about the idea (e.g.,submitter, category, tags, summary, and/or the like) and its status(number of votes received, number of supporters, number of votes needed,time until expiration, and/or the like). For example, the selection ofwhich ideas are displayed as elements 214 may be random. As anotherexample, the selection may be based on characteristics of the ideas(e.g., on number of votes received, number of votes needed, time untilexpiration, and/or the like), the user profile of the user viewing thewindow 202 (e.g., idea categories the user prefers to see, tags the userhas indicated an interest in, ideas submitted by particular users,and/or the like). Element 250 may also comprise a link 218 which, wheninteracted with, may bring up a window for viewing additional submittedideas.

Element 220 may be a link that, when interacted with, brings up a listof users of the forum. Element 222 may be a link that, when interactedwith, brings up a window in which ideas, posts, attachments, and/orother content of the forum that the user has previously selected to besaved (“pinned”) can be viewed, edited, and/or the like. That is, theelement 222 may bring up the user's personal/customized space on theforum. Element 224 may be a link that, when interacted with, brings up awindow in which the user's drafts of ideas to be submitted, comments forpreviously submitted ideas, messages to be sent, and/or the like aresaved and can be viewed, edited, and/or the like.

Element 226 may comprise “at-a-glance” information about recent activityon the forum. For example, element 226 may comprise links 228 ₁-228 ₃each of which corresponds to a user who recently submitted an idea,voted for an idea, commented on an idea, and/or otherwise generatedactivity on the forum.

Element 230 may comprise “at-a-glance” information about recentcomment/discussion activity on the forum. For example, element 230 maycomprise hyperlinks 232 ₁-232 ₃, corresponding to three recent posts.Each element 232 may, for example, display a summary of the post, theauthor of the post, tags associated with the post, etc. The element 230may also comprise element 234 which brings up a window via which postsbeyond the recent ones associated with elements 232 can be viewed andinteracted with.

Element 236 may comprise “at-a-glance” information about recent ideaactivity on the forum. For example, element 236 may comprise hyperlinks238 ₁-238 ₃, corresponding to three recent submitted ideas, recentlysubmitted votes, and/or recently submitted comments on ideas. Eachelement 238 may, for example, display a summary of the idea, thesubmitter of the post, submitter of the vote, tags associated with theidea, etc.

Element 240 may comprise “at-a-glance” information about recent populartopics, posts, etc. on the forum. For example, element 240 may comprisehyperlinks 242 ₁-242 ₃, corresponding to the three most-popular tagsover a determined time interval.

Referring to FIG. 3, there is shown an example window (or screen) 302 ofa graphical user interface of an electronic idea generation andevaluation forum. The window/screen may, for example, be displayed on amonitor of device 106 a and be interacted with via a mouse and keyboardof the device 106 a. The example window 302 comprises a plurality ofinterface elements each which may be hyperlinks, text boxes, drop downmenus, and/or the like. The window 302 may, for example, be displayed inresponse to interacting with one of the elements 214 of FIG. 2. In theexample scenario shown, the window 302 is displayed in response toelement 214 ₂ having been selected (as indicated by the heavy line).

The elements 204-210 and 214 may be as described above with reference toFIG. 2. The element 312 may comprise elements 302 each of which maycontain content pertaining to the idea.

A first element 302 ₁ may comprise a post corresponding to the originalidea submission. The element 302 ₁ may comprise elements 304, 306, 208,and 310. The element 304 may indicate the status (e.g., number of votesreceived, number of supporters, number of votes needed, time untilexpiration, and/or the like) of the idea. The element 308 which comprisea link(s) to attachments (images, papers, and/or any other filesuploaded by the submitter of the idea) submitted with the idea. Theelement 306 may comprise a link that, when interacted with, casts Nvote(s) for the idea of element 302 ₁. A vote being cast may cause, forexample, a received votes parameter of the idea of element 302 ₁ toincrease by N, a needed votes parameter of the idea of element 302 ₁ todecrease by N, an available votes parameter of the voting user todecrease by N, and/or an outstanding votes parameter of the voting userto increase by N, where N is a number. In an example implementation, theelement 306 may enable configuration of the value of N. In this manner,a user may be enabled to submit more votes for ideas that s/he feelsmore strongly about. In an example implementation, the maximum number ofvotes that any single user may cast for an idea may be determined basedon a needed votes parameter associated with the idea and a neededsupporters parameter associated with the idea. In one suchimplementation, an idea may need at least V votes from at least U usersand any single user may, therefore, be limited to a maximum of V/Uvotes. The element 310 may, when interacted with, bring up a form forsubmitting a comment/reply to the post 302 ₁. The reply may then bedisplayed as a second element 302 in the element 312. Each of theremaining elements 302 ₂-302 ₄ may be comments/replies to one or more ofthe posts in the element 312. For example, in the scenario shown, 302 ₂and 302 ₄ are replies to 302 ₁, and 302 ₃ is a reply to 302 ₂.

Referring to FIG. 4, there is shown a window 402 which is similar to thewindow 302 of FIG. 3. Whereas the window 302 comprises elementspertaining to particular ideas submitted for evaluation and voting on,window 402 provides a more general discussion forum. Each of theelements 404 may correspond to a thread. The element 412 may compriseelements 406 corresponding to posts of the selected thread. The element406 ₁ may correspond to the first post (“Post 0”) of the thread. Theelements 408 and 410 may be substantially similar to the elements 308and 310, respectively, of FIG. 3.

Referring to FIG. 5, there is shown an element 502 which may, forexample, correspond to a more-detailed view of the element 302 ₁ of FIG.3. The example element 502 comprises elements 504, 506, 508, 510, and512. The element 504 may display a value (shown as a′ in the exampledepicted) of the received votes parameter for the idea associated withelement 502. The element 506 may display the expiration date/timeparameter (displayed as ‘ddmmyyyy’ in the example depicted) of the ideaassociated with element 502. The element 508 may display the neededvotes parameter (displayed as ‘V’ in the example depicted) for the ideaassociated with element 502. The needed votes parameter may be formattedas total votes and/or remaining votes (i.e., total votes minus receivedvotes). The element 510 may correspond to the element 306 of FIG. 3. Theelement 510 may display the number of votes (displayed as ‘N’ in theexample depicted) that will be subtracted from the user's availablevotes and added to the user's outstanding votes if the user decided toclick 510 to vote for the idea associated with element 502 (this valuemay be configurable by the voting user). The element 512 may display thevalue of the user's available votes, total votes, and/or outstandingvotes parameters.

FIG. 6 is a flowchart illustrating an exemplary process performed by asystem for idea generation and evaluation. In the process of FIG. 6, aparticular user's available votes may be limited (e.g., according to theadministrator-defined rules and/or based on an actual monetary budgetavailable to the user). The process begins with block 602 in which auser (“User 1”) submits an idea (“Idea X”) using element 206. In block604, User 2 views Idea X (e.g., selects an element 214 corresponding toIdea X, which brings up an element 312 corresponding to Idea X). Inblock 604, it is determined whether Idea X is still open for voting. Ifnot, then in block 606, User 2 is prevented from voting for Idea X.

Returning to block 604, if Idea X is still open for voting, then inblock 608 it is determined whether User 2 has at least the minimumnumber of available votes required to vote for Idea X. For example, ifIdea X requires M (an integer greater than or equal to 1) vote(s) tosupport it, it is determined whether User 2 has at least M availablevote(s). If User 2 does not have sufficient available votes, then theprocess advances to block 606 and User 2 is prevented from supportingIdea X. User 2 may be able to vote for Idea X later, however, if one ormore other ideas for which User 2 has outstanding votes expires beforeIdea X expires (and frees up a sufficient number of User 2's votes).

Returning to block 608, if User 2 has sufficient available votes, thenin block 610 User 2 votes for Idea X (e.g., by clicking a correspondingelement 306) and the number of votes cast in favor of Idea X (‘N’) issubtracted from User 2's available votes and added to User 2'soutstanding votes.

In block 612, after Idea X expires, it is determined whether Idea Xreceived threshold number of votes (indicated by a needed votesparameter) to advance for further evaluation (e.g., to be placed beforemanagement and/or a review committee). If Idea X has not received thethreshold number of votes, then in block 614 Idea X expires withoutfurther evaluation. Subsequently, in block 616, received votes for IdeaX are returned to the users who cast them. Accordingly, User 2'soutstanding votes parameter may be decreased by the amount of votes thatUser 2 cast for Idea X and User 2's available votes parameter may beincreased by an amount less than, equal to, or greater than the numberof votes that User 2 cast for Idea X. Where User 2's outstanding votesparameter is decreased by less than the increase of User 2's availablevotes parameter, User 2's total votes parameter may be increased by thedifference (“voting profit”). User 2's total votes parameter beingincreased may be a way of rewarding User 2 for participating in thevoting process and/or as a way to give User 2 a greater chance at votingfor a successful idea in the future. Where User 2's outstanding votesparameter is decreased by more than the increase of User 2's availablevotes, User 2's total votes parameter may be decreased by the difference(“voting profit”). User 2's total votes parameter being decreased may bea way of penalizing User 2 for voting for an idea that didn't make it tocommittee, to encourage User 2 to vote carefully and/or as a way to givegreater sway to voters who are better at identifying successful ideas.Where votes correspond to real dollars, the dollars corresponding to“voting loss” may be held in an account to pay future “voting profit.”

Returning to block 612, if Idea X does receive the threshold number ofvotes, then, in block 618 Idea X continues on for committee review.Next, in block 620, if the committee does not vote in favor of Idea X,then, in block 622, Idea X is not funded or implemented. Then, in block624, Subsequently, in block 624 received votes for Idea X are returnedto the users who cast them. Accordingly, User 2's outstanding votesparameter may be decreased by the amount of votes that User 2 cast forIdea X and User 2's available votes parameter may be increased by anamount less than, equal to, or greater than the number of votes thatUser 2 cast for Idea X. Where User 2's outstanding votes parameter isdecreased by less than the increase of User 2's available votesparameter, User 2's total votes parameter may be increased by thedifference (“voting profit”). User 2's total votes parameter beingincreased may be, for example, a way of rewarding User 2 for voting foran idea that made it to committee and/or as a way to give greater swayto voters such as User 2 who are better at identifying successful ideas.Where User 2's outstanding votes parameter is decreased by more than theincrease of User 2's available votes, User 2's total votes parameter maybe decreased by the difference (“voting loss”). User 2's total votesparameter being decreased may be, for example, a way of penalizing User2 for voting for an idea that wasn't approved by committee, to encourageUser 2 to vote carefully and/or as a way to give greater sway to voterswho are better at identifying successful ideas. Where votes correspondto real dollars, the dollars corresponding to “voting loss” may be heldin an account to pay future “voting profit.”

Returning to block 620, if the committee does vote in favor of Idea X,then in block 626 Idea X is funded and/or implemented. Next, in block628, User 2's outstanding votes parameter may be decreased by the amountof votes that User 2 cast for Idea X and User 2's available votesparameter may be increased by an amount less than, equal to, or greaterthan the number of votes that User 2 cast for Idea X. Where User 2'soutstanding votes parameter is decreased by less than the increase ofUser 2's available votes parameter, User 2's total votes parameter maybe increased by the difference (“voting profit”). User 2's total votesparameter being increased may be, for example, a way of rewarding User 2for voting for an idea that got funded/implemented and/or as a way togive greater sway to voters such as User 2 who are better at identifyingsuccessful ideas. Where User 2's outstanding votes parameter isdecreased by more than the increase of User 2's available votes, User2's total votes parameter may be decreased by the difference (“votingloss”). User 2's total votes parameter being decreased may be, forexample, a way of giving other users greater chances at voting for asuccessful idea in the future (i.e., to encourage diversity ofsuccessful ideas). Where votes correspond to real dollars, the dollarscorresponding to “voting loss” may be held in an account to pay future“voting profit.”

In an example implementation, User 2's available votes may be increasedby a first amount in block 616 (should the process arrive at block 616),by a second amount in block 622 (should the process arrive at block622), and by a third amount in block 628 (should the process arrive atblock 628), where first amount<second amount<third amount. For example,a forum administrator may set a return on investment parameter to 80%for block 616, to 100% for block 624, and to 120% for block 628. In suchan example, a user casting N votes for an idea that reaches block 616may result in only 0.8*N votes being returned to the user's availablevotes, a user casting N votes for an idea that reaches block 624 mayresult in N votes being returned to the user's available votes, and auser casting N votes for an idea that reaches block 628 may result in1.2*N votes being returned to the user's available votes.

FIG. 7 is a flowchart illustrating an exemplary process performed by asystem for idea generation and evaluation using value-added-basedvoting. The process begins with block 704 in which User 1 submits IdeaX. As part of the submission of Idea X, User 1 may set a cost parameterequal to the forecasted amount of money that it would take to implementIdea X. In block 706, until Idea X expires, other users may view it inthe forum and submit votes for it. In this example implementation, eachparticular user may vote for Idea X by inputting a dollar amountcorresponding to the value that the particular user estimates Idea Xwould bring to the user's business (e.g., division in the company thatthe user manages, the product line(s) that the user manages, etc.). Forexample, a vote of $10,000 dollars for Idea X by User 2 may correspondto User 2 estimating that Idea X would add $10,000 to User 2's business.Similarly, a vote of −$20,000 may mean that User 2 believes Idea X wouldactually subtract value from his business. In block 708, the votingwindow for Idea X expires. In block 710, it is determined whether aminimum number of voters (e.g., set by a forum administrator and/orbased on results of past idea submissions and voting) have submittedvotes for Idea X. If not, then, in block 714, the Idea does not advancefor further evaluation (e.g., committee review).

Returning to block 710, if a minimum number of users did submit votesfor idea X, then in block 712, a metric that is a function of the costof Idea X and the value added numbers input by the voters is calculatedand used to determine whether Idea X should advance for furtherevaluation. For example, the total value added (i.e., the sum of allvotes) may be compared to a multiple of the cost (e.g., 1.5*C). If themetric indicates that further evaluation is not warranted, then, inblock 714, Idea X does not advance. If, however, the metric indicatesthat further evaluation is warranted, then, in block 718, Idea Xproceeds to committee evaluation.

In block 718, if the committee votes against Idea X, then, in block 720,Idea X is not funded. On the other hand, if the committee votes in favorof Idea X then, in block 722, Idea x is funded/implemented.

In an example implementation, a computing system (e.g., 104) maygenerate elements of a graphical user interface that comprises interfaceelements for submission of ideas. In response to a first one of aplurality of users (e.g., working at computing device 106 a) of thecomputing system submitting an idea via the graphical user interface(e.g., via interface element 206), the computing system may set a value(e.g., in memory of hardware 108) of a voting window parameter for thesubmitted idea, the value corresponding to a duration of a voting windowfor the submitted idea. In response to a first one of a plurality ofusers of the computing system submitting an idea via the graphical userinterface (e.g., via interface element 206), the computing system maygenerate elements of the graphical user interface via which others ofthe plurality of users can cast votes for the submitted idea, whereineach cast vote for the submitted idea increases a received vote countparameter (e.g., in memory of hardware 108) associated with thesubmitted idea. In response to a second one of the plurality of users(e.g., working at computing device 106 a) of the computing systemsubmitting a vote for the submitted idea during the voting window, thecomputing system may decrease an available votes parameter associatedwith the second user, whereby the available votes parameter is based ona limit on concurrently outstanding votes by the second user. Inresponse to determining, based on the voting window parameter, that thevoting window for the submitted idea is complete, the computing systemmay, if the vote count parameter is above or equal to a threshold,generate an indication that the submitted idea is to undergo furtherevaluation. In response to determining, based on the voting windowparameter, that the voting window for the submitted idea is complete,the computing system may, if the vote count parameter is below thethreshold, generate an indication that the submitted idea is not toundergo further evaluation. In response to determining, based on thevoting window parameter, that the voting window for the submitted ideais complete, the computing system may increase the available votesparameter associated with the second user.

Referring to FIG. 8, there is shown an example window (or screen) 802 ofa graphical user interface of an electronic forum integrated with a CRMdatabase. The window/screen 802 may, for example, be presented on amonitor of device 106 a and be interacted with via a mouse and keyboardof the device 106 a. The example window 802 comprises a plurality ofinterface elements each which may be hyperlinks, text boxes, drop downmenus, and/or the like.

Element 804 may be a link that, when interacted with (e.g., touched,clicked, or the like) brings up a window in which notifications for theuser are displayed (e.g., an “inbox” of messages, statuses, and the likepertaining to case studies and/or other activity in forum). Element 806may be a link that, when interacted with, brings up a form forgenerating a new case study (e.g., a manually generated or “one-off”case study). The form may have, for example, elements for entering: thetitle of the post, a description of the post, a categorization of thepost, for associating tags with the post, and the like. In an exampleimplementation where manually-generated case studies may be posted, theform may comprise elements for defining rules as to when the case studyshould post (e.g., based on selected CRM fields having specifiedcontents) and/or for defining rules as to the contents of the case study(e.g., which CRM fields should be placed in the body of the case study).Upon submission of the form, a thread and/or post may be created in theforum and other users may be enabled to view and reply to it. Element808 may be, for example, a text-box for entering search queries forsearching case studies, posts, attachments, and/or any other content ofthe forum. Element 810 may be a link that, when interacted with, bringsup a window for configuring the user's profile and/or preferences.Interface elements 804-810 may be part of a “navigation bar” of thewindow/screen 802.

Element 850 comprise “at-a-glance” information about generated casestudies. For example, each time the window 802 is loaded, a plurality ofcase studies may be algorithmically selected and displayed as elements814, each of which comprises information about a particular case study(e.g., associated business unit, the customer, employees, and/or thelike) and its status (e.g., whether a sales opportunity is “open” or“closed”). For example, the selection of which case studies aredisplayed as elements 814 may be random. As another example, theselection may be based on characteristics of the case studies (e.g.,time generated), the user profile of the user viewing the window 802(e.g., case studies that pertain to customers, business units,technology sectors, etc. that the user is associated with in his/heraccount profile), tags the user has indicated an interest in, casestudies submitted by other users that are associated with the viewinguser in a company organization chart, and/or the like. Element 850 mayalso comprise a link 818 which, when interacted with, may bring up awindow for viewing additional case studies. Element 850 may alsocomprise a link 815 which, when interacted with, may bring up a windowfor filtering and/or sorting the case studies presented in element 850.

Element 820 may be a link that, when interacted with, brings up a listof users of the forum. Element 822 may be a link that, when interactedwith, brings up a window in which case studies, posts, attachments,and/or other content of the forum that the user has previously selectedto be saved (“pinned”) can be viewed, edited, and/or the like. That is,the element 822 may bring up the user's personal/customized space on theforum. Element 824 may be a link that, when interacted with, brings up awindow in which the user's drafts of case studies to be submitted,comments for previously posted case studies, messages to be sent, and/orthe like are saved and can be viewed, edited, and/or the like.

Element 826 may comprise “at-a-glance” information about recent activityon the forum. For example, element 826 may comprise links 828 ₁-828 ₃each of which corresponds to a user who recently commented on a casestudy, caused the generation of a case study, and/or otherwise generatedactivity on the forum.

Element 830 may comprise “at-a-glance” information about recentcomment/discussion activity on the forum. For example, element 830 maycomprise hyperlinks 832 ₁-832 ₃, corresponding to three recent posts.Each element 832 may, for example, display a summary of the post, theauthor of the post, tags associated with the post, etc. The element 830may also comprise element 834 which brings up a window via which postsbeyond the recent ones associated with elements 832 can be viewed andinteracted with.

Element 850 may comprise “at-a-glance” information about recent filesposted to the forum. For example, element 850 may comprise hyperlinks852 ₁-852 ₃, corresponding to three recent files (e.g., word processorfiles, spreadsheet files, images, videos, etc.). Each element 852 may,for example, display a summary of the file, the author/poster of thefile, tags associated with the file, etc. The element 830 may alsocomprise element 854 which brings up a window via which files beyond therecent ones associated with elements 852 can be viewed and interactedwith.

Element 836 may comprise “at-a-glance” information about recent casestudy activity on the forum. For example, element 836 may comprisehyperlinks 838 ₁-838 ₃, corresponding to three recently generated casestudies (e.g., in response to three recently updated CRM records) and/orrecent comments/replies to case studies. Each element 838 may, forexample, display a summary of the activity and/or case study, the userassociated with the activity and/or case study, tags associated with theactivity and/or case study, etc.

Element 840 may comprise “at-a-glance” information about recent populartopics, posts, etc. on the forum. For example, element 840 may comprisehyperlinks 842 ₁-842 ₃, corresponding to the three most-popular tagsover a determined time interval.

Referring to FIG. 9, there is shown an example window (or screen) 902 ofa graphical user interface of an electronic forum integrated with a CRMdatabase. The window/screen 902 may, for example, be presented on amonitor of device 106 a and be interacted with via a mouse and keyboardof the device 106 a. The example window 902 comprises a plurality ofinterface elements each which may be hyperlinks, text boxes, drop downmenus, and/or the like. The window 902 may, for example, be displayed inresponse to interacting with one of the elements 814 of FIG. 2. In theexample scenario shown, the window 902 is displayed in response toelement 814 ₂ having been selected (as indicated by the heavy line).

The elements 804-810 and 814 may be as described above with reference toFIG. 8. The element 912 may comprise elements 902 each of which maycontain content pertaining to a particular case study (“Case Study 2” inthe example depicted).

A first element 902 ₁ may present the case study. The element 902 ₁ maycomprise elements 904 ₁-904 _(N), elements 906 ₁-906 _(N), 808, and 910.Each of the elements 904 ₁-904 _(N) may be one of N (an integer) CRMfields selected by a user or administrator to be placed in the casestudy. Each of the elements 906 ₁-906 _(N) may comprise contents of acorresponding one of the selected CRM fields. For example, field 904 ₁may be a “Customer Name” field for a particular CRM record and thecorresponding field 906 ₁ may contain “CompanyX.”

The case study 902 ₁ may be automatically generated and posted inresponse to a user-defined rule (e.g., defined by a forum administratorusing an interface such as is described with reference to FIG. 12 below)for generating and posting case studies. In an example implementation, auser-defined rule may cause the case study to be posted in response to asales representative creating or closing a sales opportunity in the CRMdatabase. In the former case, the case study may, for example, begenerated and posted in response to the sales representative creating arecord in the CRM database. In the latter case, the case study may, forexample be generated and posted in response to the sales representativechanging a status field of the CRM record to “closed.”

Which fields of the CRM record corresponding to the potential or closedsale are displayed as elements 904 ₁-904 _(N) may be determined based onone or more user-defined rules (e.g., defined by a forum administratorusing an interface such as is described with reference to FIG. 12below). In an example implementation where the case study corresponds toa sales opportunity, selected CRM fields may include, for example: thename of the potential customer, the industry and/or market that thepotential customer operates in, the potential product or service to besold, others entities competing for the potential customer's business,important dates, a narrative field where the sales representative caninput miscellaneous information, and/or the like.

The element 908 may comprise one or more tags associated with the casestudy. In an example implementation, tags associated with the case studymay be determined based on one or more user-defined rules (e.g., definedby a forum administrator using an interface such as is described withreference to FIG. 12 below).

The element 910 may when interacted with, bring up a form for submittinga comment/reply to the case study 902 ₁. The reply may then be displayedas a second element 902 in the element 912. Each of the remainingelements 902 ₂-902 ₄ may be comments/replies to one or more of the casestudies and comments/replies in the element 912. For example, in thescenario shown, 902 ₂ and 902 ₄ are replies to 902 ₁, and 902 ₃ is areply to 902 ₂.

Referring to FIG. 10, there is shown a window 1002 which is similar tothe window 902 of FIG. 9. Whereas the window 902 comprises elementspertaining to particular case studies, window 1002 provides a moregeneral discussion forum.

Each of the elements 1004 may correspond to a thread. The element 1012may comprise elements 1006 corresponding to posts of the selectedthread. The element 1006 ₁ may correspond to the first post (“Post 0”)of the thread. The element 1014 may indicate one or more tags that areassociated with the post and/or the selected thread. Which tags areassociated with the post may be manually selected by an author of thepost and/or may be automatically selected based on the contents of thethread and/or one or more user-defined rules. The elements 1008 and 1010may be substantially similar to the elements 908 and 910, respectively,of FIG. 9.

Referring to FIG. 11, there is shown a window 1102 which is similar tothe window 1002 of FIG. 10. Whereas the window 1002 comprises elementsof a general discussion forum, window 1102 comprises elementscorresponding to files associated (e.g., by attaching to posts) with theelectronic forum.

Each of the elements 1104 may correspond to a respective file. (i.e.,1104 ₁ may correspond to a first file, 1104 ₂ may correspond to a secondfile, and so on). The element 1112 may comprise elements 1106corresponding to posts associated with the selected file. The element1106 ₁ may correspond to the first post (“Post 0”) of the thread. Theelement 1116 may comprise a link to download the file associated withthe thread. The element 1114 may indicate one or more tags that areassociated with the file. Which tags are associated with the file may bemanually selected by the user who posted the file and/or may beautomatically selected based on the contents of the thread to which thefile was posted and/or one or more user-defined rules. The elements 1108and 1110 may be substantially similar to the elements 1008 and 1010,respectively, of FIG. 10. In an example implementation, the filesdisplayed in the window 1102 may be attached to case studies as shown inFIG. 9 and/or threads as shown in FIG. 10. In this regard, the window1102 may aggregate files from across multiple threads or case studies.In this manner, a user may be enabled, for example, to find relatedfiles and/or particular versions a file.

FIG. 12 depicts an example user interface for creation of user-definedrules pertaining to the generation and posting of case studies. Thedepicted window comprises an element 1202 for defining rules as to whencase studies are to be generated and posted to the forum, an element1204 for defining rules as to what contents to include in a generatedcase study, and an element 1206 for defining rules as to what tags areto be associated with a generated case study.

The element 1202 may comprise elements such as, for example, drop-downmenus, check boxes, text boxes, and/or the like for a user (e.g., aforum administrator) to define rules as to when case studies are to begenerated and posted to the forum. In an example implementation, theelement 1202 may comprise elements for selecting one or more fields ofthe CRM database and defining logic expressions based on the contents ofthe selected field(s). For example, a rule that a case study should becreated upon closing of a sales opportunity (i.e., create case studywhen contents of a status field in the CRM is set to “closed”) may bedefined by selecting a “status” field via a first checkbox or drop-downmenu, selecting the logic expression “is equal to” via a second checkboxor drop-down menu, and selecting “closed” via a third checkbox ordrop-down menu.

The element 1204 may comprise elements such as, for example, drop-downmenus, check boxes, text boxes, and/or the like for a user (e.g., aforum administrator) to define rules for what content to include in casestudies. In an example implementation, the element 1204 may list each ofa plurality of CRM fields and the user may be enabled to check which ofthe fields to include in generated case studies.

The element 1206 may comprise elements such as, for example, drop-downmenus, check boxes, text boxes, and/or the like for a user (e.g., aforum administrator) to define rules for what tags to associate withgenerated case studies. In an example implementation, the element 1206may list each of a plurality of CRM fields and the user may be enabledto check which of the fields should be converted to tags. For example,where a particular CRM field is selected in element 1206, a generatedcase study may be tagged with the contents of the selected field.

FIG. 13 is a flowchart illustrating an exemplary process performed by asystem for customer relationship management and collaboration. Theprocess begins with block 1302 when a company has set-up a CRM databaseand is using it for managing data.

In block 1305, rules for when case studies are to be posted to theelectronic forum, and rules for the contents of the posted case studies,are defined by a user (e.g., a forum administrator) using an interfacesuch as the one described with reference to FIG. 6.

In block 1306, an update of a CRM field triggers the creation andposting of a case study, in accordance with the rules defined in block1304. For example, a sales representative changing a sales opportunitystatus field to “closed” may trigger the creation of the case study.

In block 1308, the case study is generated with its contents populatedwith the contents of one or more CRM fields, in accordance with therules defined in block 1304. For example, the case study may bepopulated with the contents of “customer name” field, a “customerindustry” field, a “customer markets” field, a “narrative” field, and/orany other fields of the CRM database which may enable the case study tobe used as a training/learning tool for closing future salesopportunities.

In block 1310, the case study is tagged with one or more tags selectedaccording to the rules defined in block 1304. For example, the casestudy may tagged with a tag that corresponds to the industry of theclosed sales opportunity.

In block 1312, the case study is posted to the electronic forum. Forexample, the case study is posted as the first post of a new thread thatis categorized according to one or more of the CRM fields included inthe case study.

In block 1314, a notification (e.g., SMS, MMS, email, intra-forummessage, etc.) is sent to forum users whose account informationindicates an interest and/or association with the case study (e.g.,based on its contents and/or tags). For example, for a case studycorresponding to a closed sales opportunity, a notification may be sentto other sales representatives working in related industries or withsimilar clients. As another example, to whom a notification of a casestudy is sent may be determined by a company's organizational structure(e.g., sent to particular departments, to a manager's direct reports,etc.). In block 1316, users of the forum login and view the case study.Additionally, the users may post comments/replies to the case study(e.g., share similar experiences or suggestions, ask questionspertaining to the case study, etc.)

FIG. 14 is a high-level block diagram of a device that hosts anelectronic forum in accordance with an example implementation of thisdisclosure. In the example implementation shown, the device 104comprises memory 1420 which stores posts of the electronic forum, memory1422 which stores user profiles of the electronic forum, notificationgeneration circuitry 1424, and user interface circuitry 1428.

The user interface circuitry 1428 is operable to act as an intermediarybetween the device 104 and client devices 106 accessing the electronicforum. The user interface circuitry 1428 may, for example, operate as aweb or application server which retrieves raw data from memory, formatsit into user interface elements of a user interface of the electronicforum (e.g., encapsulates it with appropriate HTML tags), and thenserves it to a client (e.g., a web browser running locally on device 104or remote on a device 106).

The notification generation circuitry 1424 is operable to parse the userprofile data in memory 1422 to identify the tags, mentions, and/orcombinations of tags and/or mentions (referred to herein simply as“combinations”) to which users of the electronic forum are subscribed.The notification generation circuitry 1424 is also operable to monitorthe memory for new posts, and upon detecting creation of a new post,automatically inspect the post for occurrence(s) of the subscribed-totags, mentions, and/or combinations. In response to detecting anoccurrence of a subscribed-to tag, mention, or combination, thenotification generation circuitry 1424 may automatically notify theuser(s) who are subscribed-to the detected tag, mention, or combination.In an example implementation, different users may have differentpermissions for different posts. In such an implementation, prior tonotifying a user that a post has been created containing one of his/hersubscribed-to tags, mentions, or combinations, the notificationgeneration circuitry 1424 first determine (based on the post data andthe user profile data) whether the user has permission to view the post.If so, then the notification is sent. If not, then the notification maynot be sent. In an example implementation, where the user does not havepermission, the notification generation circuitry 1424 may notify anowner/creator of the post or the thread in which the post was created toquery whether the owner/creator wants to grant the user permission toview the post. In this regard, upon learning that the user is interestedin tags, mentions, and/or combinations occurring in the post, theowner/creator may want to grant the user permission. In this manner,such notifications may provide for greater connectivity among users ofthe electronic forum and increased information sharing among users ofthe users of the electronic forum.

FIG. 15A depicts an example user interface of an electronic forum inwhich a first example post is selected for display. The window/screen1502 may, for example, be presented on a monitor of device 106 a and beinteracted with via a mouse and keyboard of the device 106 a. Theexample window/screen 1502 comprises a plurality of interface elementseach which may be hyperlinks, text boxes, drop down menus, and/or thelike.

Posts in the electronic forum may be categorized. Interface element 1503may enable a user of the forum to select a category of posts to view.For example, when interacted with, element 1503 bring up a drop downlist of categories to choose from. Examples below refer to a “realestate” category, but any category is possible.

When interacted with (e.g., touched, clicked, or the like), element1504, brings up an interface element (e.g., a “window”) in whichnotifications for the user are displayed (e.g., an “inbox” of messages,statuses, and the like pertaining to activity in the forum). In anexample implementation, such notifications may be generated in responseto creation of a post containing a subscribed-to tag, mention, orcombination

When interacted with, element 1506 brings up a post creation form forcreating a new post. Upon submission of the form, a thread and/or postmay be created in the electronic forum and other users may be enabled toview and reply to the post. Details of example post creation forms aredescribed below with reference to FIGS. 18A-18C.

When interacted with, element 1508 brings up a search form for searchingposts (including, for example, body fields, attachments, tags, etc.),comments, and/or any other contents of the forum and other users may beenabled to view and reply to the post. Details of example post searchforms are described below with reference to FIGS. 19A-19B.

When interacted with, element 1510 brings up a user window forconfiguring the user's profile and/or preferences. Interface elements1504-1510 may be part of a “navigation bar” of the window/screen 1502.

Each of the interface elements 1512 ₁-1512 ₃ corresponds to an existingpost (“Post 1,” “Post 2,” and “Post 3,” respectively) stored in theelectronic forum. Each of the posts may have been generated, forexample, in response to a user filling out and submitting a postcreation form.

The element 1514 is a container for interface elements that correspondto the selected one of elements 1512. For illustration, in FIG. 15element 1512 ₂ is selected (as indicated by the bold line around 1512 ₂)and, therefore, in FIG. 15 element 1514 contains information elementscorresponding to Post 2.

The information corresponding to a post in the electronic forum may bestored, for example, in a data structure such as a table, a database, orthe like. Accordingly, in an example implementation, generation of theelement 1514 for Post 2 may comprise the following: (1) in response toelement 1512 ₂ being selected (e.g., touched or clicked) on a clientdevice viewing the forum (e.g., in a web browser or native app) adatabase record corresponding to Post 2 is fetched; (2) the record isparsed to recover components of Post 2 (which may include, for example,metadata/header fields of Post 2, content of Post 2, and/or otherinformation); (3) an HTML file corresponding to the interface elementsfor presenting the retrieved components of Post 2 is generated based onthe components of the post and the information from the form used tocreate the post; (4) the HTML file is transmitted to the client device;and (5) the HTML file is rendered for presentation on a monitor (e.g.,using an applicable cascaded style sheet (CSS) file).

In an example implementation, a database record corresponding to a postin the electronic forum may comprise one or more first fields which maybe populated with metadata/header information and a second field whichmay be populated with the contents of the post (which may include, forexample, body fields, links to attachments, tags, and/or otherinformation). The contents may be stored as structured text (e.g., inJavaScript Object Notation (JSON) form, XML format, or the like). Anon-limiting example is shown below in Table 1.

TABLE 1 Post ID Content of Post Post 3 “Form 2”:{ “Header Field1”:{“value”:“[Author's Name]”, “name”:“Header Field 1”}, “Header Field2”:{“value”:“[Date of Post 3]”, “name”:“Header Field 2”}, “Body Field1”:{“value”:“[user input to 1520₁ of form 318₁]”,“name”:“Body Field 1”},“Body Field 2”:{“value”:“[user input to 1520₂ of form318₂]”,“name”:“Body Field 2”}, “Attachments”:{“value”:“[path input to343 of form 318₂)]”,“name”:“Attachments”}, “Tags”:{“value”:“[tag(s)based on Form 2 tag rule(s)]”, “name”:“Tags”} }

The interface element 1514 comprises an interface element 1515corresponding to the selected post (Post 2 in FIG. 15A), and one or moreinterface elements 1532 corresponding to comments to the selected post.In the example of FIG. 15, where Post 2 is selected, the interfaceelement 1514 comprises an element 1515 and comment elements 1532 ₁-1532₃. The element 1515 comprises an edit element 1516, header fieldelements 1518 ₁-1518 ₂, body field elements 1520 ₁-1520 ₆, one or moreattachment elements 1522, one or more tags elements 1524, and a commentelement 1526. Each of the comment elements 1532 ₁-1532 ₃ compriseselements 1530 ₁ and 1530 ₂, an attachments element 1528, and an element1526.

When interacted with, the edit element 1516 may bring up a form forediting Post 2. Upon submission of the form, the underlying structureddata of Post 2 may be retrieved from memory (e.g., a database recordassociated with Post 2 may be retrieved, and the contents of the recordmay be parsed), updated to reflect the edits input via the form, andstored back to memory (e.g., overwriting the database record, adding tothe database record, or creating a new database record). Thewindow/screen 1502 may then be refreshed to display the updated versionof Post 2. Details of example post-editing forms are described belowwith reference to FIGS. 21A and 21B.

Each of the header field elements 1518 ₁ and 1518 ₂ may presentinformation about Post 2 that was not necessarily manually entered intothe post creation form that generated Post 2, but is neverthelessassociated with Post 2. For example, the metadata/header fields maypresent metadata associated with Post 2 such as a name of the author ofPost 2, the time at which Post 2 was created, the time at which Post 2was last edited, whether Post 2 has attachments, and/or the like.

Each of the body field elements 1520 ₁-1520 ₆ may present informationentered into a field of the post creation form used to generate Post 2.

The attachment elements 1522 may present hyperlinks to, or in-linerenderings of, files (e.g., images, text files, pdf files, and/or thelike) attached to Post 2 by its author.

The tags element 1524 may present one or more tags associated with thepost presented in element 1515. The tags may be presented as hyperlinksthat, when interacted with, trigger a search for other posts tagged withthe same or similar tag and/or trigger presentation of an interfaceelement for subscribing to the selected tag. In an exampleimplementation, tags associated with Post 2 may be determined based onone or more tag generation rules associated with the post creation formused for generating Post 2, as, for example, discussed below withreference to FIGS. 18A-18C.

The comment element 1526 may, when interacted with, bring up a form forsubmitting a comment on Post 2. The comment may then be displayed in acorresponding element 1532. In this regard, each of the elements 1532 ₁and 1532 ₃ may present a comment on Post 2 that was submitted either bythe author of Post 2 or another user of the electronic forum who hasaccess to Post 2.

For each element 1532 _(X) (X representing here a value between 1 and 3in FIG. 15A), each comment field elements 1530 _(Y) (Y representing herea value between 1 and 2 in FIG. 15A) may present header/metadatainformation associated with comment displayed in element 1532 _(X)and/or may present information entered into the comment generation formused to generate the comment element 1532 _(X). Details of examplecomment generation forms are described below with reference to FIGS. 20Aand 20B.

For each element 1532 _(X), the attachment element may present, forexample, hyperlinks to, or in-line renderings of, files (e.g., images,text files, pdf files, and/or the like) attached to the commentpresented in element 1532 _(X) by the comment's author.

For each element 1532 _(X), the comment element 1526 may, wheninteracted with, bring up a form for submitting a comment on the commentshown in element 1532 _(X). The comment may then be displayed in anelement 1532 _(Y) (Y representing here any value not equal to X). Forexample, the element 1532 ₂ presents a comment on the comment shown inelement 1532 ₁.

As a non-limiting example to help illustrate the various fields of Post2, assume that the category selected in element 1503 is “real estate”and that Post 2 is a post regarding a house for sale. For example, Post2 may have been created using a “Pocket Listing” post creation formselected using element 1506. In such an implementation, the headerfields 1518 may present, for example: (1) the name of the realtor/userof the electronic forum that created Post 2; and (2) the timestamp thatPost 2 was created. In such an implementation, the body fields 220 maypresent, for example: (1) the neighborhood of the house; (2) number ofbedrooms in the house; (3) the number of bathrooms in the house; (4) thesquare footage of the house; (5) the price of the house; and (6) whetherparking is included. In such an implementation, pictures of the housemay be attached to Post 2 and presented in element 1522. In such animplementation, the comment fields 1532 may present, for example, (1)author of the comment; and (2) a question about the house (e.g., from anauthor other than the author of Post 2) or additional information aboutthe house (e.g., from the author of Post 2 in response to a question ina previous comment).

Now referring to FIG. 15B, again shown is the screen 1502 but this time,for illustration, an example tag of #Projects is shown in the tagselement 1524 of Post 2. As a result of a user selecting the #Projectstag, interface elements 1552 and 1554 ₁-1554 ₃ are presented. Each ofuser interface elements 1554 ₁-1554 ₃ correspond to a post containing#Projects. That is, upon clicking #Projects in element 1515 a search ofother posts in the electronic forum that contain #Projects wastriggered. Each search hit that the user has permission to view is thenpresented as an interface element 1554. Thus, in the example shown,there are three other posts containing #Projects that the user haspermission to view. Selection of one of the elements 1554 causes thecorresponding post and comments to be displayed in element 1515 the sameas Post 2 is displayed in FIG. 15A.

In response to the user selecting the interface element 1552, the useris subscribed to #Projects and a dialog box 1560 (shown in FIG. 15C) maybe displayed to notify the user of the subscription. The user can clearaway the dialog box by selecting interface element 1562.

FIG. 16 shows an example user profile screen of the electronic forum.The screen is for an example user “Mac” and may be displayed in responseto selection of interface element 1510. The user profile screencomprises a profile picture interface element 1602, user info element1606, element 1604 for triggering a profile editing interface, element1608 presenting the user's historical activity in the electronic forum,interface element 1610 presenting the user's tag subscriptions,interface element.

The interface element 1608 may present, for example, past posts made bythe user, past comments made by Mac, past posts viewed by Mac, pastsearches performed by Mac, and/or the like.

The interface element 1610 comprises a plurality of interface elements1612, each of which corresponds to a tag the Mac is subscribed to. Foreach subscribed-to tag, Mac may select either a corresponding interfaceelement 1614 to have notifications for that tag sent in real-time (i.e.,as soon as possible after creation of a post from, or referencing, thesubscribed-to user), or an interface element 1616 to have notificationsof such posts sent periodically (e.g., hourly, daily, weekly, etc.).

The interface element 1618 comprises a plurality of interface elements1620, each of which corresponds to another user of the electronic forumto whom Mac is subscribed. For each subscribed-to user, Mac may receivenotifications when the subscribed-to user creates a post in the forumand/or when a post contains a “mention” of the subscribed-to user iscreated by a third user in the forum. For each subscribed-to user, Macmay select either a corresponding interface element 1622 to havenotifications for the subscribed-to user sent in real-time (i.e., assoon as possible after creation of a post from, or referencing, thesubscribed-to user), or an interface element 1624 to have notificationsof such posts sent periodically (e.g., hourly, daily, weekly, etc.). Inan example implementation, mentions and tags may be differentiated byuse of one or more distinguishing alphanumeric characters. For example,tags may begin with the pound sign (#) and mentions may begin with theat sign (@). In such an implementation, #Mac would then be a tag thatdoes not necessarily pertain to the electronic forum user Mac, whereas amention of @Mac would definitely pertain to the electronic forum userMac.

Upon being selected, the interface element 1626 may trigger presentationof a user interface for Mac to add and/or remove tag and/or usersubscriptions. In an example implementation, such a user interface mayprovide for crafting more advanced subscriptions using tags, mentions,and/or Boolean search terms. For example, Mac may be enabled to setup asubscription to be notified of posts that contain both a mention of @Deeand the tag #Paddy's.

FIG. 17 is a flowchart illustrating an example process for real-time,interest-based notifications, in accordance with an exampleimplementation of this disclosure. In block 1702, User A logs into theelectronic forum and creates a post containing the tag #Projects. Inblock 1704, in response to the post creation in block 1702, the systemhosting the electronic forum automatically inspects (without user inputrequired to trigger the inspection) the post to detect whether itcontains any tags and/or mentions. In block 1706, the systemautomatically determines (without user input required to trigger thedetermination) whether any tags and/or mentions in the post meet thetag, user, and/or combination subscriptions of any users of theelectronic forum. If not, then in block 1708 no notifications are sent.

Returning to block 1706, if the tags and/or mentions in the post domatch at least one subscription, then the process advances to block1710. In block 1710, for each matching subscription, the systemdetermines whether the user associated with the subscription haspermission to view the post. Then, in block 1712, the system sends anotification of the post to any users having a matching subscription andappropriate permissions.

In accordance with an example implementation of this disclosure, asystem which hosts an electronic forum comprises: memory (e.g., 1420) inwhich is stored profiles of users of the electronic forum, memory (e.g.,1422) in which is stored posts of the electronic forum, and notificationgeneration circuitry (e.g., 1424). The notification generation circuitryis operable to, automatically in response to creation of a post to theelectronic forum, inspect the post for an occurrence of a particulartag. The notification generation circuit is operable to determine,automatically in response to a detection that the post contains anoccurrence of the particular tag, which of the users are both subscribedto the particular tag and have permission to view the post; and send,automatically in response to a determination that a first one or more ofthe users are both subscribed to the particular tag and have permissionto view the post, a notification of the post to the first one or more ofthe users.

The system may also comprise user interface circuitry (e.g., 1428). Theuser interface circuitry may be operable to serve user interfaceelements (e.g., elements contained in 1514 of FIG. 15A) corresponding tothe post (e.g., Post 2 of FIG. 15A), wherein one of the user interfaceelements (e.g., 1424) comprises text of the particular tag (e.g., thetext “#Projects”). The user interface circuitry may be operable to, inresponse to a user selecting the one of the user interface elements,serve a user interface element (e.g., 1552) via which the user cansubscribe to the particular tag. The user interface circuitry and thenotification generation circuitry may be operable to in response to auser interface selecting the one of the user interface elements, searchfor other posts of the electronic forum which contain the particulartag, and present user interface elements (e.g., 1554 ₁-1554 ₃)corresponding to the other posts of the electronic forum which containthe particular tag. The automatic send of the notification may as soonas possible after the creation of the post (e.g., as soon as processingand/or network resources are available to perform the inspection,determination, and send). In some instances this may result in thenotification be sent within, for example, 10 seconds of the creation ofthe post. In some instances this may result in the notification be sentwithin, for example, 10 minutes of the creation of the post.

The notification generation circuitry may be operable to inspect thepost, automatically in response to the creation of the post, for amention of a particular user of the users (e.g., look for @Dennis for auser of the electronic system having the username Dennis). Thenotification generation circuitry may be operable to determine,automatically in response to a detection that the post contains amention of the particular user, which of the users are both subscribedto the particular one of the users and have permission to view the post.The notification generation circuitry may be operable to send,automatically in response to a determination that a second one or moreof the users are both subscribed to the particular user and havepermission to view the post, a notification of the post to the secondone or more of the users. In this example implementation, all tags inthe posts of the electronic forum, including the particular tag in thepost, begin with a first one or more alphanumeric characters (e.g., thepound sign), and all mentions in the posts of the electronic forum,including the mention of the particular user in the post, begin with asecond one or more alphanumeric characters (e.g., the at sign) differentthan the first one or more alphanumeric characters.

Now referring to FIG. 15D, again shown is the window 1502 but this timewith element 1512 ₃ selected. Accordingly, in FIG. 15D the element 1514contains interface elements presenting Post 3. These elements includingthe post itself in element 1515 and comments to the post in elements1532 ₁-1532 ₃. As a non-limiting example for illustration, it is assumedthat Post 3 is a different type of post than Post 2. For example, Post 3may have been created using a different post creation form than the postcreation form used to create Post 2, as discussed below with referenceto FIGS. 18A-18C.

The element 1515 in Post 3 comprises one or more each of: edit element1516, header field element 1518, body field element 1520, attachmentelement 1522, tags element 1524, and comment element 1526. Each of theseelements may be as described above with reference to FIG. 15A. Thedifference in the number of elements and the information presented inthe elements may be a result of different post creation forms being usedto generate the two posts.

As a non-limiting example to help illustrate the various fields of Post3, assume that the category selected in element 1503 is “real estate”and that Post 3 is a general post regarding the real estate market. Forexample, Post 3 may have been created with a “Discussion” post creationform selected via element 1506. In such an implementation, the headerfields 1518 may present, for example: (1) the name of the realtor whocreated Post 2; and (2) the timestamp that Post 2 was created. In suchan implementation, the body fields 1520 may present, for example: (1)the title of the post; (2) the text of the post. In such animplementation, a recent real-estate-related article (or otherattachment) may be attached to Post 3 and presented via element 1522. Insuch an implementation, the comment fields 1532 may present, forexample, (1) author of the comment; and (2) a comment on the text or thepost and/or the attached article.

FIG. 18A depicts the example screen of FIG. 15D after selection of the“create post” interface element 1506. In response to user interactionwith the create post element 1506, a form selection interface element1802 is presented (e.g., as a pop-up, overlay, new window, etc.). Theinterface element 1802 comprises a plurality of elements 1804, eachcorresponding to a respective one of a plurality of post creation forms.In response to selection of an element 1804 _(X), a respective one ofthe post creation forms may be presented (e.g., as a pop-up, overlay,new window, etc.). In the example implementation depicted, the form 1818₁ of FIG. 18B (e.g., a “Discussion” form of a real estate category) mayhave been used to generate Post 3 of FIG. 15D and the form 1818 ₂ ofFIG. 18C (e.g., a “pocket listing” form of a real estate category) mayhave been used to generate Post 2 of FIG. 15A.

Referring generally to FIGS. 18B and 18C, post creation form 1818 _(Z)(Z here representing 1 for FIG. 18B and 2 for FIG. 18C) may comprise oneor more elements 1820, one or more elements 1822, a “cancel” element1824, a “submit” element 1826, and a tag preview element 1828.

Each element 1820 _(X) (X here representing any value between 1 and 2 inFIG. 18B and between 1 and 6 in FIG. 18C) may present a label for BodyField X and corresponding element 1822 _(X) may be a user inputinterface element for entering data for Body Field X. The type of theelement 1822 _(X) may be determined by the selected post creation form1818 _(Z). The type of element 1822 _(X) may be fixed (e.g., element1822 _(X) will have the same type for all posts created with the form1818 _(Z)) or may be variable (e.g., the type of 1822_(X) is determinedon a post-by-post basis based on an element-type-selection rule setforth in form 1818 _(Z)). Examples of the types of elements 1822include: text boxes (e.g., 1822 ₁ and 1822 ₂ in FIG. 18B and 1822 ₂ inFIG. 18C), drop-down lists (e.g., 1822 ₁ in FIG. 18C), checkboxes (e.g.,1822 ₆ in FIG. 18C), groups of radio buttons (e.g., 1822 ₃ in FIG. 18C),value range boxes (e.g., 1822 ₄ in FIG. 18C), and/or the like. The typeof element 1822 _(X) may be determined based, at least in part, on thetype of data input to and/or expected for the Body Field X. As anotherexample, data type may be an input to an element-type-selection ruledefined in form 1818 _(Z). Example data types include, but are notlimited to: integer, character, string, floating point number, Boolean,an array of any of the foregoing, and/or the like.

As an example, an integer may be expected for Body Field X and,accordingly, element 1822 _(X) may be a text box that accepts an integertyped by a user, a drop down list of integer values, or a radio buttonwith multiple selectable integer values. As another example, a stringmay be expected for Body Field X and, accordingly, element 1822 _(X) maybe a text box that accepts mixed letters and numbers typed by a user. Asanother example, a pair of integers representing a range may be expectedfor Body Field X and, accordingly, element 1822 _(X) may be a pair ofboxes into which a user types a lower limit integer and an upper limitinteger. As another example, one of an enumerated list of values and,accordingly, element 1822 _(X) may be a drop down list containing thepossible values, or may be a group radio button with each buttoncorresponding to one of the possible values. As another example, aBoolean (“true” or “false”) value may be expected for Body Field X and,accordingly, element 1822 _(X) may be a checkbox with checkedcorresponding to “true” and unchecked corresponding to “false.”

Each of the elements 1822 _(X) may be designated as optional ormandatory. A mandatory field may be one where user input of the expectedtype must be entered before the form can be submitted and the postcreated. An optional field may be one which need not be completed inorder to create a post, an incomplete optional field may, for example,result in a blank interface element in a resulting post.

Selection of the element 1824 may cancel the form 1818 _(Z) withoutcreation of a post. Selection of element 1826 may create a post based onthe element(s) 1820, on the input provided via element(s) 1822, onsearch rules set forth by the post creation form, and/or on taggeneration rules set forth by the post creation form (e.g., rulesdefined by a designer of the form). For example, the system (e.g., 104)hosting the electronic forum may perform the following in response toselection of element 1826 in form: (1) a new record corresponding to anew post may be created in a database; (2) one or more fields of therecord is/are populated with metadata regarding the post (e.g., anidentifier of the form used to create the post, the name of the userthat created the post, the time the post was created, etc.); (3) one ormore fields of the record is/are populated with information entered intoone or more fields 1822; and (4) one or more fields of the record is/arepopulated with one or more tags generated based on the tag generationrules defined in the form used to create the post.

The element 1828 may preview the tags that will be generated andassociated with the post upon clicking “submit” element 1826. The tagsmay be generated based on one or more tag generation rules that weredefined for the form during creation of the form. The tag generationrules may determine whether or not one or more tags are generated for aparticular post. The tag generation rules may determine which fields1820 and/or 1822 to use in one or more tag(s) of a particular post(e.g., which of fields 1820 ₁-1820 ₆ and 1822 ₁-1822 ₆ to use in tagginga post created via form 1818 ₂ of FIG. 18C). The tag generation rulesmay determine how to format the tag(s) of a particular post (e.g., howto punctuate the tag(s), how to handle whitespace or other specialcharacters appearing in the selected field(s) 1820 and/or 1822, etc.).Generally speaking, tag generation rules may use any suitableexpressions, operators, flow control statements, etc. In an exampleimplementation, the tag generation rules may be stored in a text-basedformat such as JavaScript Object Notation (JSON), extensible markuplanguage XML, or the like. A few non-limiting examples are presentednext to help illustrate automatic tag generation.

As a first example of automatic tag generation based on defined rules,assume a tag generation rule of form 1818 ₁ in FIG. 18B dictates that atag to be associated with a post created via the form 1818 ₁ shallconsist of “#[keywords in element 1822 ₂ separated by ‘+’ arranged withneighborhood first and home type second]” and that a list ofneighborhood keywords: “Wicker Park, West Loop, Bucktown” and a list ofhome type keywords “Condo, townhouse, loft” are associated with the form1818 ₁. Next, assume that a user types “Two-Bedroom Loft for Rent inWicker Park” into the element 1822 ₂. Based on these assumptions, a tagautomatically generated and associated with the post would be“#WickerPark+Loft”.

As a second example of automatic tag generation based on defined rules,assume a first tag generation rule of form 1818 ₂ in FIG. 18C dictatesthat a tag to be associated with a post created via the form 1818 ₁shall consist of “#[Body Field 3]:[selected in 1822 ₃].” Next, assumethat Body Field 3 is “No. of Beds,” and in 1822 ₃ the user has selecteda radio button corresponding to “2.” Based on these assumptions, tagsautomatically generated and associated with the post would be“#No.ofBeds:2”.

As a third example of automatic tag generation based on defined rules,assume that a tag generation rule associated with form 1818 ₂ of FIG.18C is: “if 1822 ₆ is checked, then ‘[Body Field 6],’” and assume thatBody Field 6 is “ParkingIncluded.” Based on this assumption, when a userchecks box 1822 ₆, a resulting post will be tagged #ParkingIncluded, butwhen a user does not check box 1822 ₆, a resulting post will not have atag regarding parking (an alternative rule could establish such a postbeing tagged with #ParkingNotIncluded, for example).

FIG. 19A depicts the example screen of FIG. 15A after selection of the“search” interface element 1508. In response to user interaction withthe search element 1508, a search form selection interface element 1901is presented (e.g., as a pop-up, overlay, new window, etc.). Theinterface element 1901 comprises an element 1907 and a plurality ofelements 1905. The element 1907 enables selection of the category orcategories in which posts are to be searched. Each of the elements 1905corresponds to a respective one of a plurality of search forms. Each ofthe search forms may be a counterpart of a respective one of theplurality of post creation forms available in the electronic forum. Inthis regard, different search forms may be tailored for searchingdifferent types of posts. In an example implementation, however, one ormore aggregate search forms may be available for simultaneouslysearching multiple types of posts.

In response to selection of an element 1905 _(X) (X here representingany value between 1 and 2) a respective one of the search forms may bepresented (e.g., as a pop-up, overlay, new window, etc.). In the exampleimplementation depicted, the form 1909 ₂ of FIG. 19C may be used tosearch posts, such as Post 3 of FIG. 15D, generated with post creationform 1818 ₁ of FIG. 18B, and the form 1909 ₁ of FIG. 19B may be used tosearch posts, such as Post 2 of FIG. 15A, generated with post creationform 1818 ₂ of FIG. 18C.

Referring generally to FIGS. 19B and 19C, each search form may compriseone or more elements 1902, one or more elements 1906, a “cancel” element1928, and a “run search” element 1930.

Selection of the element 1928 may cancel the form without running thesearch. Selection of element 1930 which may run a search of the post(s)associated with the selected search form in the category or categoriesselected via element 1907 and searching for user input entered into oneor more of fields 1906.

Each element 1902 _(X) (X here representing any value between 1 and 2)may present a label for Body Field X and corresponding element 1906 _(X)may be corresponding a user input interface element for entering valuesof Body Field X for which posts of the selected category(ies) are to besearched. In the example implementation depicted, the elements 1902 ofform 1909 ₁ correspond to fields of posts (e.g., Post 2 of FIG. 15A)created with the form 1818 ₂, and the elements 1902 of form 1909 ₂correspond to fields of posts (e.g., Post 3 of FIG. 15D) created withform 1818 ₁.

Each element 1906 _(X) (X here representing any value between 1 and 4for FIG. 19C and 1 and 7 for FIG. 19B) may be a user input interfaceelement for inputting search parameters for Body Field X. The type ofelement 1906 _(X) may be determined based on the search rules of theposts to be searched. As an example, for searching posts of a type inwhich Body Field X is of type integer, the search rules for those postsmay dictate that element 1906 _(X) be, for example: a drop down list ofintegers to search for in Body Field X, value range box for inputting alower limit and upper limit of a range of integers to be searched for inBody Field X, a group or radio buttons for selecting one of anenumerated list of integers to be searched for in Body Field X, or thelike. As another example, for searching posts of a type in which BodyField X is of type string, the search rules of those posts may dictatethat element 1906 _(X) be, for example: a drop down list of stringvalues for which to search Body Field X, a text box for typing in astring to be searched for in Body Field X, or the like. As anotherexample, for searching posts of a type in which Body Field X is of typeboolean, the search rules for those posts may dictate that element 1906_(X) be, for example, a checkbox.

FIGS. 20A and 20B depict example comment creation forms. In FIG. 20A acomment creation form 2000 ₁ is presented (e.g., as a pop-up, overlay,new window, etc.) in response to selection of the element 1526 that ispart of Post 2 shown in FIG. 15A. In FIG. 20B, a comment creation form2000 ₂ is presented in response to selection of element 1526 that ispart of Post 3 shown in FIG. 15D. As illustrated by FIGS. 20A and 20B,the type of comment form that is presented in response to interactingwith a “Comment” interface element may depend on the type of post orcomment in which the interacted-with “comment” element appears. That is,the comment forms may be customized to the type of post or comment beingcommented on.

Referring generally to FIGS. 20A and 20B, each comment creation form maycomprise one or more elements 2002, one or more elements 2004, a“cancel” element 2006, and a “post comment” element 2008.

Selection of the element 2006 may cancel the form without posting acomment. Selection of element 2008 may create a comment based on theelement(s) 2002, on the input provided via element(s) 2004, and/or ontag generation rules associated with the comment creation form. Forexample, the system (e.g., 104) hosting the electronic forum may performthe following in response to selection of element 2006 in form 2000_(X): (1) a new record corresponding to a new comment may be created ina database; (2) one or more fields of the record is/are populated withmetadata regarding the comment (e.g., an identifier of the form used tocreate the post, the name of the user that created the post, anidentifier of the post or comment being commented on, a timestamp of thecomment, etc.); (3) one or more fields of the record is/are populatedwith information entered into one or more fields 2004 _(Y); and (4) oneor more fields of the record is/are populated with one or more tagsgenerated based on the tag generation rules defined in the form 2000_(X) used to create the comment.

Each element 2002 _(Y) may present label for Comment Field X andcorresponding element 2004 _(Y) may be a user input interface elementfor entering data for Comment Field X. The type of element 2004 _(X) maybe determined by the selected comment creation form 2000X. The type ofelement 2004 _(Y) may be fixed (e.g., element 2004 _(Y) will have thesame type for all comments created with the form 2000 _(X)) or may bevariable (e.g., the type of 2004 _(Y) is determined on acomment-by-comment basis based on an element-type-selection rule setforth in form 2000 _(X)). Examples of the types of elements 2004include: text boxes, drop-down lists, checkboxes, groups of radiobuttons, value range boxes, and/or the like. The number and/or types ofelements 2002 and 2004 in any particular comment form may be determinedby the post to which the comment is being added. As a result, in theexample implementation depicted, the comment form 2000 ₁ comprises twoeach of elements 2002 and 2004, whereas the comment form 2000 ₂comprises only one each of elements 2002 and 2004.

FIGS. 21A and 21B depict example post editing forms. In an exampleimplementation, the posts being stored as structured data may enableediting the posts via a form that is the same, or substantially similar,to the form that was used to create the post. Accordingly, in FIG. 21Bform 1818 ₁ may be presented in response to selection of the editelement 1516 in Post 2 and, in FIG. 21A, form 1818 ₂ may be presented inresponse to selection of the edit element 1516 in Post 3. Each of thefields 1520 may be designated as editable or non-editable.

In an example implementation, editing of a post may comprise thefollowing: (1) in response to element 1516 being selected (e.g., touchedor clicked) on a client device viewing the forum (e.g., in a web browseror native app) a database record corresponding to the post is retrievedfrom memory; (2) the record is parsed to recover components of the post;(3) the applicable post editing form (e.g., identified in the structureddata of the post) is populated based on the recovered components of thepost; (3) a user edits the one or more fields of the post which aredesignated as editable; (4) the edited post is are stored as structureddata (e.g., overwriting the original structured data and/or databaserecord in which it is stored, or adding to the original structured dataand/or database record in which it is stored).

FIG. 22 depicts a flowchart of an example process for creating a formfor post generation in an electronic forum.

The example process begins with block 2202 in which an administrator ofthe electronic forum opens up an interface for designing a post creationform such as the forms 1818 ₁ and 1818 ₂.

In block 2204, the administrator adds a field to the form. This mayinclude designating the type and/or format of data that the field willhold. Example types include integer, character, Boolean, string, arrayof any of the other types, etc. The data type may be used for indexingthe field for later searching of the post.

In block 2206, the administrator generates a search rule for the fieldadded in block 2204. As an example, where the field is of type integer,the administrator may select a search rule which dictates that a searchform generated for searching posts containing the field include a dropdown list interface element for selecting, from a finite list, aninteger to search for in the field. As another example, where the fieldis of type boolean, the administrator may select a search rule whichdictates that a search form generated for searching posts containing thefield include a check box that corresponds to “true” when checked and“false” when unchecked. As another example, where the field is of typestring, the administrator may select a search rule which dictates that asearch form generated for searching posts containing the field include atext box into which a user may input a string to be searched for in thefield.

In block 2208, if another field is to be added to the form, the processmay return to block 2204. Otherwise, the process may advance to block2210.

In block 2210, the administrator may create tag generation rules for theform. The tag generation rules may be stored in a text-based format suchas, for example, JSON, XML, or the like.

In block 2212, rules for formatting a post generated from the form maybe defined. Such rules may include, for example, the fonts to be used,the character set to be used, where each of the fields of the postshould be visually located, etc. The formatting may be stored as acascaded style sheet (CSS) file.

In block 2214, the form is saved and made available for use by users ofthe electronic forum (e.g., via “create post” element 1806).

As utilized herein the terms “circuits” and “circuitry” refer tophysical electronic components (i.e. hardware) and any software and/orfirmware (“code”) which may configure the hardware, be executed by thehardware, and or otherwise be associated with the hardware. As usedherein, for example, a particular processor and memory may comprise afirst “circuit” when executing a first one or more lines of code and maycomprise a second “circuit” when executing a second one or more lines ofcode. As utilized herein, “and/or” means any one or more of the items inthe list joined by “and/or”. As an example, “x and/or y” means anyelement of the three-element set {(x), (y), (x, y)}. As another example,“x, y, and/or z” means any element of the seven-element set {(x), (y),(z), (x, y), (x, z), (y, z), (x, y, z)}. As utilized herein, the terms“block” and “module” refer to functions than can be performed by one ormore circuits. As utilized herein, the term “exemplary” means serving asa non-limiting example, instance, or illustration. As utilized herein,the term “e.g.,” introduces a list of one or more non-limiting examples,instances, or illustrations. As utilized herein, circuitry is “operable”to perform a function whenever the circuitry comprises the necessaryhardware and code (if any is necessary) to perform the function,regardless of whether performance of the function is disabled, or notenabled, by some user-configurable setting.

Other implementations may provide a non-transitory computer readablemedium and/or storage medium, and/or a non-transitory machine readablemedium and/or storage medium, having stored thereon, a machine codeand/or a computer program having at least one code section executable bya machine and/or a computer, thereby causing the machine and/or computerto perform processes as described herein.

Accordingly, the present method and/or system may be realized inhardware, software, or a combination of hardware and software. Thepresent method and/or system may be realized in a centralized fashion inat least one computing system, or in a distributed fashion wheredifferent elements are spread across several interconnected computingsystems. Any kind of computing system or other apparatus adapted forcarrying out the methods described herein is suited. A typicalcombination of hardware and software may be a general-purpose computingsystem with a program or other code that, when being loaded andexecuted, controls the computing system such that it carries out themethods described herein. Another typical implementation may comprise anapplication specific integrated circuit or chip.

The present method and/or system may also be embedded in a computerprogram product, which comprises all the features enabling theimplementation of the methods described herein, and which when loaded ina computer system is able to carry out these methods. Computer programin the present context means any expression, in any language, code ornotation, of a set of instructions intended to cause a system having aninformation processing capability to perform a particular functioneither directly or after either or both of the following: a) conversionto another language, code or notation; b) reproduction in a differentmaterial form.

While the present method and/or system has been described with referenceto certain implementations, it will be understood by those skilled inthe art that various changes may be made and equivalents may besubstituted without departing from the scope of the present methodand/or system. In addition, many modifications may be made to adapt aparticular situation or material to the teachings of the presentdisclosure without departing from its scope. Therefore, it is intendedthat the present method and/or system not be limited to the particularimplementations disclosed, but that the present method and/or systemwill include all implementations falling within the scope of theappended claims.

What is claimed is:
 1. An electronic collaboration system comprising:one or more storage devices on which resides at least one database inwhich is stored a plurality of user-posted messages, wherein each of theplurality of user-posted messages is associated, in the at least onedatabase, with at least one of a plurality of tags; interface generationcircuitry operable to: access the one or more storage devices; generateat least one first user interface element of the electroniccollaboration system, wherein the at least one first user interfaceelement is interactive such that a user can interact with it to selectfrom among a plurality of categories; generate a first plurality ofsecond user interface elements of the electronic collaboration systemwhen a first one of the plurality of categories has been selected viathe first user interface element, and a second plurality of second userinterface elements of the electronic collaboration system when a secondone of the plurality of categories has been selected via the first userinterface element, wherein: each of the first plurality of second userinterface elements is associated, in the at least one database, with arespective one of the plurality of tags, and is interactive such that auser can select it to select the associated one of the plurality oftags; and each of the second plurality of second user interface elementsis associated, in the at least one database, with a respective one ofthe plurality of tags, and is interactive such that a user can select itto select the associated one of the plurality of tags; generate a thirduser interface element of the electronic collaboration system thatpresents the user-posted messages associated with the selected one ofthe plurality of tags; and network interface circuitry operable toreceive, via a network, requests generated in response to userinteraction with the at least one first user interface element, thefirst plurality of second user interface elements, the second pluralityof second user interface elements; and the third user interface element.2. The electronic collaboration system of claim 1, wherein anyparticular one of the plurality of tags is associated, in the at leastone database, with a plurality of users of the electronic collaborationsystem such the plurality of users are permitted to view, via the thirdinterface element, the user-posted messages associated with theparticular one of the plurality tags.
 3. The electronic collaborationsystem of claim 1 comprising post generation circuitry operable togenerate, automatically in response to a change in data stored in saidat least one database, a message to be stored to the database andpresented in the third interface element.
 4. The electroniccollaboration system of claim 1, wherein the interface generationcircuitry is operable to generate a form that user can interact with togenerate a new user-posted message to be stored to the database andpresented in the third interface element.
 5. The electroniccollaboration system of claim 4, wherein: the form comprises one or moreuser interface input elements via which a user can input content to beincluded in the new user-posted message; and the interface generationcircuitry is operable to determine how many of the user interface inputelements to include in the form based on which of the categories is tobe associated, in the at least one database, with the new user-postedmessage.
 6. The electronic collaboration system of claim 4, wherein: theform comprises one or more user interface input elements via which auser can input content to be included in the new user-posted message;and the interface generation circuitry is operable to determine how manyof the user interface input elements are to be included in the formbased on which of the tags is to be associated, in the at least onedatabase, with the new user-posted message.
 7. The electroniccollaboration system of claim 4, wherein: the form comprises one or moreuser interface input elements via which a user can input content to beincluded in the new user-posted message; and the interface generationcircuitry is operable to determine a type of each of the user interfaceinput elements based on which of the categories is to be associated, inthe at least one database, with the new user-posted message.
 8. Theelectronic collaboration system of claim 7, wherein the type of each ofthe user interface input elements is one of: text box, dropdown list,checkbox, radio button, and value range box.
 9. The electroniccollaboration system of claim 4, wherein: the form comprises one or moreuser interface input elements via which a user can input content to beincluded in the new user-posted message; and. the interface generationcircuitry is operable to determine a type of each of the user interfaceinput elements based on which of the tags is to be associated, in the atleast one database, with the new user-posted message.
 10. The electroniccollaboration system of claim 9, wherein the type of each of the userinterface input elements is one of: text box, dropdown list, checkbox,radio button, and value range box.
 11. The electronic collaborationsystem of claim 4, wherein: the post generation circuitry is operable toautomatically add a tag to the content of the new user-posted message;and the tag automatically added to the content of the new user-postedmessage is determined by an automatic tagging rule associated, in the atleast one database, with the form.
 12. The electronic collaborationsystem of claim 11, wherein: the form comprises one or more userinterface input elements via which a user can input content to beincluded in the new user-posted message; the automatic tagging rulereferences a particular one or more of the user interface input elementsof the form; and the tag automatically added to the new user-postedmessage is formed from content entered by a user into the particular oneor more of the user interface elements.
 13. The electronic collaborationsystem of claim 4, wherein: the form is a comment creation form; and theinterface generation circuitry is operable to generate the commentcreation form in response to user interaction with an interface elementthat indicates a desire to generate the new user-posted message as acomment to an existing one of the plurality of user-posted messages. 14.The electronic collaboration system of claim 13, wherein: the commentcreation form comprises one or more user interface input elements viawhich a user can input content to be included in the new user-postedmessage; and the interface generation circuitry is operable to determinehow many of the user interface input elements to include in the commentcreation form based on which of a plurality of post creation forms isassociated, in the at least one database, with the existing one of theplurality of user-posted messages.
 15. The electronic collaborationsystem of claim 13, wherein: the comment creation form comprises one ormore user interface input elements via which a user can input content tobe included in the new user-posted message; and the interface generationcircuitry is operable to determine a type of each of the user interfaceinput elements of the comment creation form based on which of aplurality of post creation forms is associated, in the at least onedatabase, with the existing one of the plurality of user-postedmessages.
 16. The electronic collaboration system of claim 1, wherein:each of the plurality of user-posted messages is associated, in the atleast one database, with a search rule; the interface generationcircuitry is operable to: present an interface element via which a usercan indicate a subset of the user-generated messages to be included in asearch; and generate a search form based on a search rule associated, inthe at least one database, with the subset of user-posted messages to beincluded in the search.
 17. The electronic collaboration system of claim13, wherein: the search form comprises one or more user interface inputelements via which a user can input content to be used as searchcriteria; and the interface generation circuitry is operable todetermine how many of the user interface input elements of the searchform based on the search rule associated, in the at least one database,with the subset of user-posted messages to be included in the search.18. The electronic collaboration system of claim 13, wherein: the searchform comprises one or more user interface input elements via which auser can input content to be used as search criteria; and the interfacegeneration circuitry is operable to determine a type of each of the userinterface input elements of the search form based on the search ruleassociated, in the at least one database, with the subset of user-postedmessages to be included in the search.